ORM (Object-Relational Mapping) এবং Microservices দুটি গুরুত্বপূর্ণ প্রযুক্তি যা একসঙ্গে ব্যবহৃত হলে শক্তিশালী এবং স্কেলেবল অ্যাপ্লিকেশন তৈরি করতে সহায়ক। Spring ORM হল Spring ফ্রেমওয়ার্কের একটি উপাদান যা ORM এর মাধ্যমে ডাটাবেস অপারেশনগুলো সহজতর করে, এবং Microservices এর মাধ্যমে অ্যাপ্লিকেশনকে ছোট ছোট, স্বাধীন অংশে ভাগ করা হয় যাতে তারা একে অপরের সাথে কমিউনিকেট করতে পারে।
Spring ORM এর মাধ্যমে ডাটাবেস অপারেশন এবং Spring Boot ব্যবহার করে Microservices তৈরি করলে উভয়ের শক্তি মিশে যায় এবং একটি লাইটওয়েট, মডুলার এবং স্কেলযোগ্য আর্কিটেকচার তৈরি হয়।
Microservices হল একটি আর্কিটেকচারাল প্যাটার্ন যেখানে অ্যাপ্লিকেশনটি ছোট, স্বতন্ত্র সেবা বা সার্ভিসের মধ্যে বিভক্ত থাকে। প্রতিটি মাইক্রোসার্ভিস একটি নির্দিষ্ট ফাংশনালিটি পরিচালনা করে এবং সাধারণত নিজস্ব ডাটাবেস থাকে।
Microservices আর্কিটেকচারে প্রতিটি সার্ভিসের ডেটা ম্যানেজমেন্টের জন্য ORM (যেমন Hibernate, JPA) ব্যবহার করা হয়। ORM ডাটাবেস অ্যাক্সেসকে সহজ এবং কার্যকর করে তোলে, এবং এটি ডাটাবেস থেকে ডেটা রিট্রিভ এবং আপডেট করার সময় কোডের পুনঃব্যবহারযোগ্যতা নিশ্চিত করে।
প্রথমে Spring Boot প্রজেক্ট তৈরি করুন। যদি আপনি Maven ব্যবহার করেন, pom.xml
ফাইল এডিট করুন এবং প্রয়োজনীয় ডিপেনডেন্সি যোগ করুন:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId> <!-- অথবা আপনার পছন্দের ডাটাবেস -->
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
একটি Product Entity তৈরি করুন:
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
@Entity
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private Double price;
// Getters and Setters
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
}
Spring Data JPA ব্যবহার করে JpaRepository ইন্টারফেস তৈরি করুন:
import org.springframework.data.jpa.repository.JpaRepository;
public interface ProductRepository extends JpaRepository<Product, Long> {
// Custom queries can be defined here
}
Microservice এর মধ্যে ব্যবসায়িক লজিক (Business Logic) প্রক্রিয়া করার জন্য Service class তৈরি করুন:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class ProductService {
@Autowired
private ProductRepository productRepository;
public List<Product> getAllProducts() {
return productRepository.findAll();
}
public Product createProduct(Product product) {
return productRepository.save(product);
}
public Product updateProduct(Product product) {
return productRepository.save(product);
}
public void deleteProduct(Long id) {
productRepository.deleteById(id);
}
}
Spring Boot অ্যাপ্লিকেশনটিকে RESTful API-র মাধ্যমে এক্সপোজ করতে ProductController তৈরি করুন:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/products")
public class ProductController {
@Autowired
private ProductService productService;
@GetMapping
public List<Product> getAllProducts() {
return productService.getAllProducts();
}
@PostMapping
public Product createProduct(@RequestBody Product product) {
return productService.createProduct(product);
}
@PutMapping
public Product updateProduct(@RequestBody Product product) {
return productService.updateProduct(product);
}
@DeleteMapping("/{id}")
public void deleteProduct(@PathVariable Long id) {
productService.deleteProduct(id);
}
}
application.properties
ফাইলে ডাটাবেস কনফিগারেশন যোগ করুন:
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
এই অ্যাপ্লিকেশনটি চালানোর পর, আপনি /products
API দিয়ে ডেটা CRUD অপারেশন করতে পারবেন। উদাহরণস্বরূপ:
Spring ORM এবং Microservices একত্রে ব্যবহৃত হলে স্কেলেবল, মডুলার এবং ইন্ডিপেনডেন্ট অ্যাপ্লিকেশন তৈরি করা যায়। Spring ORM ডাটাবেস অপারেশন সহজতর করে এবং Microservices অ্যাপ্লিকেশনকে স্বাধীন এবং স্কেলযোগ্য করে তোলে। এই দুটি প্রযুক্তির একত্রে ব্যবহার করে উন্নত পারফরম্যান্স এবং নমনীয় অ্যাপ্লিকেশন ডিজাইন করা সম্ভব।
Read more